package org.springblade.modules.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.admin.dto.AbarbeitungPlanDateUpdateDTO;
import org.springblade.modules.admin.dto.PlanAbarbeitungSaveDTO;
import org.springblade.modules.admin.dto.PlanAbarbeitungSearchDTO;
import org.springblade.modules.admin.entity.MaintainAbarbeitungDetail;
import org.springblade.modules.admin.entity.MaintainAbarbeitungRecord;
import org.springblade.modules.admin.vo.FromPlanVO;
import org.springblade.modules.admin.vo.PlanAbarbeitungDetailVO;
import org.springblade.modules.admin.vo.PlanAbarbeitungPageVO;

import java.util.List;
import java.util.Map;

public interface MaintainAbarbeitungService extends BaseService<MaintainAbarbeitungDetail> {

	Long submit(PlanAbarbeitungSaveDTO saveDTO);

    IPage<PlanAbarbeitungPageVO> selectPage(PlanAbarbeitungSearchDTO searchDTO, IPage<PlanAbarbeitungPageVO> page);

	Map<String,Object> selectPageCount();

	List<PlanAbarbeitungPageVO> downList(PlanAbarbeitungSearchDTO searchDTO);

	PlanAbarbeitungDetailVO selectDetail(Long planId);

	Boolean close(MaintainAbarbeitungRecord record);

	Boolean redeploy(MaintainAbarbeitungRecord record);

	Boolean reopen(MaintainAbarbeitungRecord record);

	List<MaintainAbarbeitungRecord> recordList(Long planId);

	List<FromPlanVO> fromPlan(Long planId);

	Boolean updateDate(AbarbeitungPlanDateUpdateDTO dateUpdateDTO);

	Boolean addUser(PlanAbarbeitungSaveDTO saveDTO);

	String selectNextByDate(Long planId);

    void updateZgPlanOverdueType(String tenantId);
}
